package com.shihb.chapter02function

/**
 * 函数的细节代码演示
 */
object Demo03Details {
  def main(args: Array[String]): Unit = {

    // 传入引用和java一样
    val tiger = new Tiger
    println(tiger.name)
    // 改了名字，得到对象和上面时同一个对象
    val tiger1 = test01(tiger)
    println(tiger1.name)
    println(tiger.name)
    println(tiger.hashCode(),tiger1.hashCode())

    println(test02(1, 2, 3))
    println(test02(1))
  }

  /**
   * 参数列表和返回值列表可以时值类型和引用类型
   */
  def test01(tiger:Tiger) ={
    tiger.name="我改了"
    //报错,scala的形参默认时val，因此不能在函数中修改
//    tiger=new Tiger
    tiger
  }

  /**
   * 可变参数
   * @param args
   * @return
   */
  def test02(args:Int*)={
    var sum = 0
    for(e<-args) sum+=e
    sum
  }

}
class Tiger{
  var name ="shb"
}
